<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>Title</title>
    <style>

    </style>
</head>
<body>
<script>
    /*
    * 解析器在调用函数每次都会向函数内部传递进一个隐含的参数
    *   这个隐含的参数就是this，this指向的是一个对象。
    *    this我们成为函数执行的上下文对象，
    *    根据函数的调用的方式不同，this会指向不同的对象
    *           1.以函数的形式调用时，this永远都是window
    *           2.以方法的形式调用时，this就是调用方法的那个对象
    *
    *
    *
    *
    * */
    function fun(a,b){
        //浏览器传入进来的this
        console.log(this)
    }
    //以函数形式调用，this是window
    window.fun()//window

    var obj ={
        'name':2,
        sayName:fun
    }
    console.log(obj.sayName == fun);//true

    //以方法的形式调用，this是调用方法的对象
    obj.sayName()//obj



    //创建一个name变量
    var name = '全局name'


    function fun(){
        console.log(this.name);
    }


    var obj = {
        name:'孙悟空',
        sayName:fun
    }

    var obj2 = {
        name:'沙和尚',
        sayName:fun
    }

    //这个时候this就起作用了
    obj.sayName()//孙悟空
    obj2.sayName()//沙和尚
    fun()//全局name

</script>
</body>
</html>